package es.javamyadmin.servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import es.javamyadmin.beans.LoginBean;

@WebServlet("/CrearBDServlet")
public class CrearBDServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    
    public CrearBDServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		System.out.println("---> En CrearBDServlet\n");
		
		String nombreBD = request.getParameter("nombreDatabase");
		
		LoginBean datosLogin = new LoginBean();
		
		datosLogin = (LoginBean) request.getSession().getAttribute("datosLogin");
		
		String user = datosLogin.getUsuario();     
        String pass = datosLogin.getPassword();
        String host = datosLogin.getServidor();
        String port = datosLogin.getPuerto();
		
        Connection conexion = null;
    	Statement estamento = null;
    	PreparedStatement preparada = null;
    	ResultSet resultado = null;
    	
    	int error = 1;
		
		if(conexion==null){
			try{
				Class.forName("com.mysql.jdbc.Driver");                
	      	    conexion=DriverManager.getConnection("jdbc:mysql://"+host+":"+port+"/", user, pass);
	      	    
	      	    PreparedStatement pstm = conexion.prepareStatement("CREATE DATABASE "+request.getParameter("nombreDatabase"));
	      	    pstm.execute();
	      	    	
	      	    
			} catch(SQLException e){
				e.printStackTrace();
				error = e.getErrorCode();
				System.out.println("Error en CrearBDServlet --> "+error);
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				if(resultado != null){
					try {
						resultado.close();
					} catch(SQLException e){
						e.printStackTrace();
					}
					resultado = null;
				}
				if(estamento != null){
					try {
						estamento.close();
					} catch(SQLException e){
						e.printStackTrace();
					}
					estamento = null;
				}
				if(preparada != null){
					try {
						preparada.close();
					} catch(SQLException e){
						e.printStackTrace();
					}
					preparada = null;
				}
				if(conexion != null){
					try {
						conexion.close();
					} catch(SQLException e){
						e.printStackTrace();
					}
					conexion = null;
				}
			}
			
			/*Capturo los errores*/
			if(error!=1){
				request.setAttribute("error", "Ha sucedido algún error durante el proceso de creación de su Base de Datos");
				
				if(error==1007){
					request.setAttribute("error", "Ya existe una Base de Datos con el nombre: "+nombreBD);
				}
				
				request.getRequestDispatcher("jsp/inicio.jsp").forward(request,response);
				
			}else{
				request.setAttribute("ok", "Base de Datos creada satisfactoriamente ");
				request.getRequestDispatcher("jsp/lista-tablas-bd.jsp?bd="+nombreBD).forward(request,response);
			}
			
			
			
				
			
			
				
		}
	}
}
